/**
 * 生成物流单号
 * @param {Object} data - 包含收货人信息、手机号码和收货地址的对象
 * @returns {string} 生成的物流单号
*/
export function generateLogisticsNumber(data) {
  const { receiverName, receiverPhone, address } = data;
  
  // 1. 提取手机尾号（后四位）
  const phoneSuffix = getPhoneSuffix(receiverPhone);
  // 2. 名字打码
  const userName = maskName(receiverName);
  // 3. 获取宿舍号
  const dormitoryCode = getDormitoryCode(address);
  // 4. 组合物流单号
  return `${phoneSuffix}+${userName}+${dormitoryCode}`;
}
  
// 提取手机尾号
function getPhoneSuffix(phone) {
  if (!phone) return '';
  return phone.slice(-4);
}

function maskName(name) {
   const len = name.length;
   if (len === 1) {
    return name;
   } else if (len === 2) {
    return name.charAt(0) + '*';
   }
   return name.charAt(0) + '*'.repeat(len - 2) + name.charAt(len - 1);
}

// 确定宿舍号
function getDormitoryCode(address) {
  if (!address) return '未填写地址';
  
  // 预定义楼栋名称及对应代码，支持简写匹配
  const dormitoryMap = {
    '教师公寓': '1',
    '春华园': '2',
    '商贸管理学院': '3', '商贸': '3', '商贸管理': '3',
    '学术交流中心': '4',
    '学生公寓1栋': '5',
    '学生公寓2栋': '6',
    '智能与信息工程学院': '7', '智能信息': '7',
    '临仙坡': '8',
    '马克思主义学院': '9', '马克思学院': '9',
    '一站式学生事务服务中心': '10',
    '图文信息中心': '11',
    '学生公寓3栋': '12',
    '学生公寓4栋': '13',
    '艺术设计与建筑学院': '14',
    '通识学院': '15',
    '学生公寓5栋': '16',
    '文化旅游学院': '17',
    '行政办公楼': '18', '行政楼': '18',
    '秋实园': '19',
    '羽毛球场': '20',
    '学生公寓6栋': '21',
    '学生公寓7栋': '22',
    '篮球场': '23',
    '体育馆': '24',
    '田径场': '25',
  };
  let floor = '';
  // 检查地址中是否包含特定的楼栋名称或其简写
  for (const [key, value] of Object.entries(dormitoryMap)) {
    if (address.includes(key)) {
      floor = value;
    }
  }
  // 提取房间号
  const roomRegex = /\d{3}/g;
  const roomMatch = address.match(roomRegex);
  if (floor && roomMatch) {
    return `${floor}-${roomMatch[0]}`;
  } else if(!floor && roomMatch) {
    const index = roomMatch.index;
    const tempFloor = address.slice(0, index);
    return `${tempFloor}-${roomMatch[0]}`;
  }

  // 未成功匹配
  return address;
}